home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 22 / Cream of the Crop 22.iso / program / rukc121s.zip / ruckdac.h < prev    next >
C/C++ Source or Header  |  1996-07-30  |  10KB  |  275 lines

  1.  
  2. /*  ruckdac.h
  3.  *
  4.  *  Defines the RUCKUS library's structs, constants, and prototype
  5.  *
  6.  *  v1.2 26-Feb-95
  7.  *
  8.  *  Struct types must be standard byte packed; do not special align elements
  9.  *   #pragma pack(1) and pack() used in this header file <<<<<<<<<<<<<<<<
  10.  *
  11.  *  recent changes:
  12.  *    renamed ModData to ModDataArea
  13.  *    added #ifndef __RUCKDAC_H...
  14.  *    added #ifdef __cplusplus...
  15.  *    changed  struct SysDev SD[7] (from [6]) for added device (SB16)
  16.  */
  17.  
  18. #ifndef __RUCKDAC_H
  19. #define __RUCKDAC_H
  20.  
  21. #pragma pack(1)
  22.  
  23. #ifdef __cplusplus
  24.    extern "C" {
  25. #endif
  26. int far pascal RUCKDAC(void far *datapack);
  27. #ifdef __cplusplus
  28.    }
  29. #endif
  30.  
  31. #define SysInfoDac      0
  32. #define InitDac         1
  33. #define ExitDac         2
  34. #define AtExitDac       3
  35. #define LoadDac         4
  36. #define PlayDac         5
  37. #define RecordDac       6
  38. #define StoreDac        7
  39. #define EndDac          8
  40. #define PauseDac        9
  41. #define DeallocDac      10
  42.  
  43. #define SetAllDac       20
  44. #define SetVolumeDac    21
  45. #define SetIntRateDac   22
  46. #define SetPriorityDac  23
  47. #define GetBufferDataDac 28
  48. #define GetBytePosDac   29
  49.  
  50. #define SetAllSBP       30
  51. #define SetVolMainSBP   31
  52. #define SetVolVocSBP    32
  53. #define SetLevelMicSBP  33
  54. #define SetLevelCDSBP   34
  55. #define SetLevelLineSBP 35
  56. #define SetFilterOutSBP 36
  57. #define SetFilterInSBP  37
  58. #define SetSourceSBP    38
  59. #define SetStereoSBP    39
  60.  
  61. #define SetSpeakerSB    40
  62. #define GetMixerRegSBP  48
  63. #define GetDacSB        49
  64.  
  65. #define ExitMod         50
  66. #define AtExitMod       51
  67. #define LoadMod         52
  68. #define PlayMod         53
  69. #define EndMod          54
  70. #define PauseMod        55
  71. #define SetIntRateMod   56
  72. #define SetSpeedMod     57
  73. #define SetVolumeMod    58
  74. #define SetPositionMod  59
  75. #define SetStereoMod    60
  76. #define SetFastMod      61
  77.  
  78. /* current highest function is 61 */
  79.  
  80. struct DeallocPack {    /* DP */
  81.  unsigned Func;
  82.  int Stat;
  83.  unsigned HandSeg;      /* RUCKUS allocates either XMM handle or DOS para */
  84.  unsigned TypeFlag;     /* 0=DOS para, 1=XMS handle */
  85. }; /* 8 */
  86.  
  87. struct GetDataPack {    /* GDP */
  88.  unsigned Func;
  89.  int Stat;
  90.  unsigned long BytePos; /* current byte relative base ptr (27) */
  91.  char far *BufferPtr; /* far pointer to buffer to fill with data */
  92.  long StartPos;         /* start get at this offset relative BufferPtr */
  93.  unsigned BufferCnt;    /* bytes to fill (2-65520) */
  94.  unsigned MixerReg;     /* SBPro mixer register to get */
  95. }; /* 20 */
  96.  
  97. struct InitPack {       /* IP */
  98.  unsigned Func;
  99.  int Stat;
  100.  unsigned DeviceID;     /* 0=SPKR,1=LPTDAC,2=DSS,4=SB,5=SBPro,6=SB16 */
  101.  unsigned IOport;
  102.  unsigned IRQline;
  103.  unsigned DMAch;
  104.  unsigned Flags;        /* see Appendix D. */
  105.  void far *InfoPtr;     /* ret:far ptr to dac info */
  106.  void far *DacExitPtr;  /* ret:far ptr to dac's ExitDac routine */
  107.  void far *ModExitPtr;  /* ret:far ptr to mod's ExitMod routine */
  108. }; /* 26 */
  109.  
  110. struct LoadPack {       /* LP */
  111.  unsigned Func;
  112.  int Stat;
  113.  void far *FilenamePtr;/* far ptr to filenameZ to load */
  114.  unsigned long StartPos; /* offset into file to start load at */
  115.  unsigned long LoadSize; /* number of bytes to load (or 0 for autosize) */
  116.  int XMMflag;            /* if <> 0 use XMS for load */
  117.  int XMMhandle;          /* ret:XMS handle, or */
  118.  void far *LoadPtr;    /* ret:DOS seg:offset (offset always 0) */
  119. }; /* 24 */
  120.  
  121. struct PlaybackPack {   /* PBP */
  122.  unsigned Func;
  123.  int Stat;
  124.  unsigned Mode;         /* mode (0=interrupt FG,1=BG,2=DMA,3=DMA+BG for mod) */
  125.  unsigned XMMhandle;    /* if <> 0 this XMM handle used regardless */
  126.  void far *LoadPtr;   /* seg:off to start of data to play */
  127.  unsigned BufferSize;   /* size of DMA buffer for mod playback */
  128. }; /* 14 */
  129.  
  130. struct PausePack {      /* PP */
  131.  unsigned Func;
  132.  int Stat;
  133.  unsigned Pause;        /* 0=unpause else pause */
  134. }; /* 6 */
  135.  
  136. struct RecordPack {     /* RP */
  137.  unsigned Func;
  138.  int Stat;
  139.  unsigned SampleRate;
  140.  int XMMhandle;         /* -1 auto XMS (ret here) else use this handle */
  141.  void far *RecordPtr; /* seg:off of buffer to store (0 for auto-store) */
  142.  unsigned long RecordBytes; /* bytes to record */
  143.  unsigned StereoFlag;   /* stereo flag */
  144. }; /* 18 */
  145.  
  146. struct SaveDataPack {   /* SDP */
  147.  unsigned Func;
  148.  int Stat;
  149.  void far *FilenamePtr; /* far ptr to filenameZ to save */
  150.  void far *DataPtr;   /* pointer to start of data to save */
  151.  unsigned FileType;     /* 1=VOC,2=WAV */
  152.  unsigned XMMhandle;    /* XMS handle of data to save (0 if DOS data) */
  153. }; /* 16 */
  154.  
  155. struct SetPack {        /* SP */
  156.  unsigned Func;
  157.  int Stat;              /* (if volume=0 SB speaker off'ed else on'ed) */
  158.  unsigned Volume;       /* volume (left ch=MSB,right=LSB) (0-127,0-127) */
  159.  unsigned IntRate;      /* playback interrupt rate (5000-23000) */
  160.  unsigned Priority;     /* priority level (0-2, default=1) */
  161. }; /* 10 */
  162.  
  163. struct SetModPack {     /* SMP */
  164.  unsigned Func;
  165.  int Stat;
  166.  unsigned VolCh1;       /* channel volume (0-255) */
  167.  unsigned VolCh2;       /* channel volumes adjustments made only */
  168.  unsigned VolCh3;       /*  if FastMode=0 */
  169.  unsigned VolCh4;
  170.  unsigned Stereo;       /* playback mode (0=mono,stereo 1,2,3) */
  171.  int FastMode;          /* fast playback (0=normal,1 fast,-1 skip) */
  172.  unsigned IntRate;      /* playback interrupt rate (5000-45500) */
  173.  unsigned Position;     /* pattern list position (0-patterns to play) */
  174.  unsigned Speed;        /* overall playback speed (1-15,default=6,15=slow) */
  175.  unsigned SliceAdj;     /* slice adjust (1-4096,default=1) set via FastMod */
  176. }; /* 24 */
  177.  
  178. struct SetProPack {     /* SPP */
  179.  unsigned Func;
  180.  int Stat;
  181.  unsigned Volume;       /* volume (low=right;0-15, high byte=left;0-15) */
  182.  unsigned VolVoc;
  183.  unsigned VolMic;       /* (mono only, 0-7) input level */
  184.  unsigned VolCD;        /* input level (0-15,0-15) */
  185.  unsigned VolLI;        /* input level (0-15,0-15) */
  186.  unsigned FilterOut;    /* 0=filter off, 1=filter on */
  187.  unsigned FilterIn;     /* 0=filter off, 1=3.2kHz, 2=8.8kHz */
  188.  unsigned SourceIn;     /* 0=mic,1=CD,2=line */
  189.  unsigned StereoIn;     /* 0=mono,1=stereo record */
  190. }; /* 22 */
  191.  
  192. struct XitPack {        /* XP */
  193.  unsigned Func;
  194.  int Stat;
  195. }; /* 4 */
  196.  
  197. struct SysDev {         /* SD (used by SysInfoPack below) */
  198.  int device;            /* =1 device available */
  199.  unsigned Port;
  200.  unsigned IRQ;
  201.  unsigned DMA;
  202.  unsigned Flags;        /* bit4=MIDI/3=XMS/2=DMA/1=REC/0=PLAY */
  203. }; /* 10 */
  204.  
  205. struct SysInfoPack {    /* SIP */
  206.  unsigned Func;
  207.  int Stat;
  208.  unsigned CPU;          /* CPU class (88,286,386,486) */
  209.  unsigned CPUmode;      /* 0=real mode,1=PM,2=PM w/paging */
  210.  unsigned MHz;          /* approx speed (5,20,33) */
  211.  struct SysDev SD[7];   /* 0 to 6 */
  212. }; /* 80 */
  213.  
  214.  
  215. /* dac and mod data area structure */
  216.  
  217. struct DacDataArea {
  218.  unsigned DeviceID;     /* 0   ;device ID */
  219.  unsigned IOport;       /* 2   ;port of device */
  220.  unsigned IRQ;          /* 4   ;IRQ of device */
  221.  unsigned DMA;          /* 6   ;DMA of device */
  222.  unsigned Flags;        /* 8   ;bit0=1 use DOS UMB memory */
  223.                         /*     ;bit1-3 reserved */
  224.                         /*     ;bit4=1 force SBPro device if SB15 (DSPtype=3) */
  225.                         /*     ;       (but DSPversion remains same) */
  226.                         /*     ;bit5=1 force XMS2 to be used */
  227.                         /*     ;bit6=1 force device speaker on until exit */
  228.                         /*     ;bit7=1 force passed parms to be used */
  229.                         /*     ;       Following values are ret bits */
  230.                         /*     ;bit8=1 paging mechanism in force, no UMBs */
  231.                         /*     ;bit9-15 reserved */
  232.  unsigned End;          /* 10  ;=1 end of play (dac play,does not include mod) */
  233.  unsigned Pause;        /* 12  ;=1 pause play */
  234.  unsigned EndOfMod;     /* 14  ;=1 end of mod play (when dac@end AND dac@endmod */
  235.                         /*     ;   both are 1 then play is done) */
  236.  unsigned MemDOS;       /* 16  ;DOS memory available (in K) */
  237.  unsigned MemXMM;       /* 18  ;XMS memory available (in K) */
  238.  unsigned Type;         /* 20  ;digital file type (1=VOC,2=WAV,3=MOD) */
  239.  unsigned MemUsed;      /* 22  ;memory used for last file load (in K) */
  240.  unsigned SampleRate;   /* 24  ;sample rate currently playing */
  241.  unsigned Stereo;       /* 26  ;stereo playback (data is stereo) */
  242.  unsigned long VocLen;  /* 28  ;length of voc block (only current block) */
  243.  void far *VocPtrPtr; /* 32  ;pointer to pointer->current data */
  244.  unsigned long RecordLen;/*36  ;length of recorded data */
  245. }; /* 40 */
  246.  
  247. struct ModDataArea {
  248.  unsigned Type;         /*  0  ;mod type (15 or 31 samples) */
  249.  unsigned Samples;      /*  2  ;number of instrument samples in mod */
  250.  unsigned HeaderSeg;    /*  4  ;header segment (aka sample info) */
  251.  unsigned PatternSeg;   /*  6  ;patterns' segment (1 to pats2play 1K pats) */
  252.  unsigned SampleSeg[31];/*  8 (+62) ;list of sample segments */
  253.  
  254.  unsigned Stereo;       /* 70  ;=1 then play in stereo (only SBPro can set) */
  255.  unsigned FastMode;     /* 72  ;=1 then channel volume adjusts disabled */
  256.  
  257.  unsigned PatListPos;   /* 74  ;byte position within mod@patterList (0-127) */
  258.  unsigned NotePatPos;   /* 76  ;note position within pattern 1K area (0-1008) */
  259.                         /*     ;pattern#=patternList(patListPos) */
  260.                         /*     ;note is at offset (pattern#*1024)+notePatPos */
  261.                         /*     ;-- in segment mod@patternSeg */
  262.  unsigned HiPattern;    /* 78  ;highest pattern number to play/+1!/ (0-63) */
  263.  unsigned Pats2play;    /* 80  ;patterns to play (direct DOS file load here) */
  264.  char PatternList[128]; /* 82  (+128) ;pattern positions (to here) */
  265.  char MKoverflow[6];    /*210 (+6)   ;overflow for 31-instr patpos read */
  266.  
  267.  unsigned MemUsed;      /*216 ;DOS mem needed by mod file loaded (in para) */
  268.  unsigned long VS;      /*218 ;times VS handler entered (50Hz rate) */
  269. }; /* 222 */
  270.  
  271. #pragma pack()
  272. #endif /* ifndef __RUCKDAC_H */
  273.  
  274. /* end of ruckdac.h */
  275.